package br.com.pedro.usuario.impl;

import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;

import br.com.pedro.entity.Usuario;
import br.com.pedro.usuario.UsuarioDAO;

public class UsuarioDAOImpl implements UsuarioDAO {

	private Session session;
	
	public void setSession(Session s){
		session = s;
	}
	
	@Override
	public void salvar(Usuario user) {
		session.save(user);

	}

	@Override
	public void delete(Usuario user) {
		session.delete(user);
	}

	@Override
	public void alter(Usuario user) {
		session.update(user);
	}

	@Override
	public Usuario getById(Integer idUsuario) {
		return (Usuario) session.get(Usuario.class , idUsuario);
	}

	@Override
	public Usuario getByEmail(String email) {
		
		String hql = "SELECT u FROM Usuario u WHERE u.email =:param1";
		Query consulta = session.createQuery(hql);
		consulta.setString("param", email);
		
		return (Usuario) consulta.uniqueResult();
		
	}

	@Override
	public List<Usuario> listar() {
		return session.createCriteria(Usuario.class).list();
	}

}
